from django.db import models
from django.contrib.auth.models import User


# Create your models here.

# 继承的是models.Model
class UserProfile(models.Model):
    USER_GENDER_TYPE = (
        ('male', '男'),
        ('female', '女')
    )
    owner = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='用户')

    # 为用户扩展的昵称，采用的是CharField字段，这是一个短文本字段，用来设置用户的昵称
    nick_name = models.CharField('昵称', max_length=50, blank=True, default='')

    # 个人简介，做多200个字符，允许为空，默认也是空
    desc = models.TextField('个人简介', max_length=200, blank=True, default='')

    # 个性签名
    gexing = models.CharField('个性签名', max_length=50, blank=True, default='')

    # 为用户扩展的生日，使用的是DateField字段，这是一个时间字段，类似的还有DateTimeField
    birthday = models.DateTimeField('生日', null=True, blank=True)

    gender = models.CharField('性别', max_length=6, choices=USER_GENDER_TYPE, default='male')

    address = models.CharField('地址', max_length=100, blank=True, default='')

    # 为用户扩展的头像字段，采用的是ImageField字段，注意这个字段必须定义upload_to选项，这个选项用来制定用于上传文件的MEDIA_ROOT的子目录
    # upload_to = 'images/%Y/%m'，中/%Y/%m %d部分是strftime()格式，
    # '%Y'是四位数年份，'%m'是两位数月份，%d是两位数日期，
    # 如果在2020年1月15日上传文件，会保存在/media/images/2020/01中
    # 在settings的TEMPLATES的OPTIONS中需要添加：'django.template.context_processors.media',  # 用来处理用户上传文件
    # 在使用ImageField字段是还必须安装pillow模块，django默认使用pillow模块来处理图片，将提前准备好的头像复制到media/image中
    image = models.ImageField(upload_to='images/%Y/%m', default='images/default.png', max_length=100,
                              verbose_name='用户头像')

    class Meta:
        verbose_name = '用户数据'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.owner.username


class EmailVerifyRecord(models.Model):
    """" 邮箱验证码校验记录"""
    SEND_TYPE_CHOICES = (
        ('register', '注册'),
        ('forget', '找回密码')
    )
    code = models.CharField('验证码', max_length=20)
    email = models.EmailField('邮箱', max_length=35)
    send_type = models.CharField(choices=SEND_TYPE_CHOICES, default='register', max_length=20)

    class Meta:
        verbose_name = '邮箱验证码'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.code
